import re

"""
正则表达式的7个境界
"""
text = 'Krul身高：155， 体重：30，年龄：1008， id号：1234567890, 生日：01-01，手机号码：13011111111'

# # level1 匹配固定的字符串
# # ['155']
# res = re.findall(r'155', text)
# print(res)

# # level2 某一类字符 \d 数字，\D 非数字， \w 所有符号（不包括逗号等）
# # ['1', '5', '5', '3', '0', '1', '0', '0', '8', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
# print(re.findall(r'\d', text))

# # level3 匹配某一类重复的数字, +，*，？，{5}有5个重复，({n，m}：n表示最少出现多少次，m表示最多出现多少次， 有点问题)
# # 问题以解决：{n,m}中间不能有空格
# # + 表示只出现一次或者多次，* 表示出现0次或者多次，？表示出现0次或者1次
# # print(re.findall(r'\w+', text))
# # 查找位数至少是4位，去其长度5：['1008', '12345', '67890', '13011', '11111']
# print(re.findall(r'\d{4,5}', text))


# # level4 组合
# # 查找生日:['01-01']
# print(re.findall(r'\d{2}-\d{2}', text))

# # leve5 - 多种情况
# # 查找生日，或者电话号码:['01-01', '13011111111']，注意：|之间不能有空格
# print(re.findall(r'\d{2}-\d{2}|1\d{10}', text))

# # level6 - 限定位置
# # 要求：在句子开头的手机号码,或座机:['18812345678']
# text1 = '18812345678，他还有一个电话号码是18887654321，他爱好的数字是01234567891，他的座机是：0571-52152166'
# print(re.findall(r'^1\d{10}|^\d{4}-\d{8}', text1))

# level7 - 内部约束
# 要求：找出形如barbar, dardar的前后三个字母重复的字符串: [('bar', 'bar'), ('car', 'car')]
# (\1)表示位置，必须和第一个()中的内容一样,()表示分组
text2 = 'barbar carcar harhel'
print(re.findall(r'(\w{3})(\1)', text2))
